package com.wuxuan.algorithm_homework.string;

import org.junit.jupiter.api.Test;

/**
 * 字符串相加
 *
 * 在不使用处理大整数的库，不能直接将输入的字符串转换为整数形式的情况下，将以字符串形式输入的数字进行相
 * 加计算出它们的和，并以字符串形式进行返回，
 */
public class AddTwoStrings {

    public String addTwoStrings(String a, String b) {
        // 假设a，b都至少有一个数
        int i = a.length() - 1;
        int j = b.length() - 1;
        int carry = 0;
        StringBuilder sb = new StringBuilder();
        while (i >= 0 || j >= 0 || carry > 0) {
            int valI = i >= 0 ? a.charAt(i) - '0' : 0;
            int valJ = j >= 0 ? b.charAt(j) - '0' : 0;
            sb.append((valI + valJ + carry) % 10);
            carry = (valI + valJ + carry) / 10;
            i--;
            j--;
        }
        return sb.reverse().toString();
    }


    @Test
    public void testAddTwoStrings() {
        String a = "17";
        String b = "118";
        System.out.println(addTwoStrings(a, b));
    }
}
